package com.demo.common.controller;

import java.io.File;

import com.demo.common.model.Blog;
import com.jfinal.core.Controller;
import com.jfinal.core.JFinal;
import com.jfinal.render.ContentType;
/**
 * JFinal Controller 响应请求 response
 * @author xwalker
 *
 */
public class RenderController extends Controller {
	public void index(){
		render("index.jsp");
	}
	/**
	 * 测试跳转
	 */
	public void testredirect(){
		renderText("当前Controller中跳转 redirect('testredirect')跳转成功 参数："+getParaMap());
	}
	/**
	 * 普通请求jsp页面
	 */
	public void render(){
		//路径为WebRoot/WEB-INF/view/render/renderjsp.jsp  前面的路径会读取config中配置的默认viewpath
		setAttr("renderMethod", "render");
		render("renderjsp.jsp");
	}
	
	/**             
	 * renderJsp 带参数        
	 */
	public void renderjsp(){
		setAttr("renderMethod", "renderjsp");
		renderJsp("renderjsp.jsp");
	}
	
	/**
	 * redirect 错误用法实例 
	 * 注意是错误的用法
	 */
	public void redirectwrong(){
		//不可以如此传递
		setAttr("renderMethod", "redirectwrong");
		redirect("renderjsp1.jsp");
	}
	/**
	 * redirect 跳转外网地址
	 */
	public void redirecturl(){
		redirect("http://www.baidu.com");
	}
	/**
	 * redirect 跳转到其他Controller
	 */
	public void redirectothercontroller(){
		redirect("/param");
	}
	/**
	 * redirect 跳转到自身Controller
	 */
	public void redirectminecontroller(){
		redirect("testredirect");
	}
	/**
	 * redirect 带参数跳转
	 */
	public void redirectwithparam(){
		redirect("testredirect?param=1");
	}
	/**
	 * redirect 带参数连续传递/render/redirectwithlastparam?param2=3
	 */
	public void redirectnexturlwithparam(){
		redirect("/param/urlmoreparam?param2=2",true);
	}
	
	
	/**
	 * 普通renderText(txt);
	 */
	public void rendertext(){
		renderText("这是RenderController rendertext的结果<br/><hr><br/>数据格式 \n 默认ContentType.TEXT\nhtml标签不会解析");
	}
	/**
	 * 普通renderText(txt,ContentType.TEXT);
	 */
	public void rendertext1(){
		renderText("这是RenderController rendertext的结果<br/><hr><br/>数据格式  \nContentType.TEXT\nhtml标签不会解析", ContentType.TEXT);
	}
	/**
	 * renderText(txt,ContentType.HTML);
	 */
	public void rendertext2(){
		renderText("这是RenderController rendertext的结果<br/><hr><br/>数据格式 \n\n ContentType.HTML \n \\r\\n字符不会解析", ContentType.HTML);
	}
	/**
	 * 错误用法
	 * renderText(txt,ContentType.XML);
	 */
	public void rendertext3(){
		renderText("这是RenderController rendertext的结果<br/><hr><br/>数据格式  ContentType.XML", ContentType.XML);
	}
	/**
	 * 正确用法
	 * renderText(txt,ContentType.XML);
	 */
	public void rendertext4(){
		renderText("<Blogs><blog><id>1</id><title>标题</title></blog></Blogs>", ContentType.XML);
	}
	
	public void renderxml(){
		setAttr("blogs", Blog.dao.find("select * from blog"));
		renderXml("blogs.xml");
	}
	/**
	 * renderHtml(htmltext) 与 renderText(txt,ContentType.HTML) 结果相同
	 */
	public void renderhtml(){
		renderHtml("<hr><span style='color:red;'>这是RenderController renderhtml的结果<span><br/><input type=\"text\"><hr>");
	}
	/**
	 * renderJavascript();
	 */
	public void renderjs(){
		renderJavascript("function renderjs(){alert('这是renderJavascript的结果');}");
	}
	/**
	 * 使用文件名下载 到默认目录查找
	 */
	public void renderfileuespath(){
		renderFile("a.txt");
	}
	/**
	 * 使用File对象下载 需要自己根据绝对路径创建
	 */
	public void renderfileusefile(){
		renderFile(new File(JFinal.me().getConstants().getFileRenderPath()+"/a.txt"));
	}
}
